﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ObjectManager;
using Process;

namespace QuanLyDiem
{
    public partial class frmDSDiemMH : Form
    {
        private static frmDSDiemMH frm = null;

        private frmDSDiemMH()
        {
            InitializeComponent();
        }

        public static frmDSDiemMH Create()
        {
            return Create(false);
        }

        public static frmDSDiemMH Create(bool child)
        {
            if (frm == null)
            {
                frm = new frmDSDiemMH();
            }
            if (child)
            {
                frm.ControlBox = false;
                frm.MinimizeBox = false;
                frm.MaximizeBox = false;
                frm.WindowState = FormWindowState.Maximized;
            }
            return frm;
        }

        private bool CheckEmpty()
        {
            txtMaLop.Text = txtMaLop.Text.Trim();
            txtMaMH.Text = txtMaMH.Text.Trim();
            if (string.IsNullOrEmpty(txtMaMH.Text))
            {
                MessageBox.Show("Phải nhập mã môn học", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMaMH.Focus();
                return true;
            }
            else
            {
                if (string.IsNullOrEmpty(txtMaLop.Text))
                {
                    MessageBox.Show("Phải nhập mã lớp", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    txtMaLop.Focus();
                    return true;
                }
            }
            return false;
        }

        private void btnTim_Click(object sender, EventArgs e)
        {
            if (CheckEmpty())
            {
                return;
            }
            Diem diem = new Diem();
            diem.MaMonHoc = int.Parse(txtMaMH.Text);
            diem.MaLop = int.Parse(txtMaLop.Text);
            dgvDiemMH.DataSource = diem.ListAll(TypeDiem.DiemMH);
            if (dgvDiemMH.Rows.Count <= 0)
            {
                MessageBox.Show("Không tìm thấy điểm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void frmDiemMH_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (frm != null)
            {
                frm.Dispose();
                frm = null;
            }
        }

        private void dgvDiemMH_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {

        }

        private void dgvDiemMH_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            int index = e.RowIndex;
            Diem diemsv = new Diem();
            int check = diemsv.UpdateDiem(int.Parse(dgvDiemMH.Rows[index].Cells["cMaDK"].Value.ToString()),
                dgvDiemMH.Rows[index].Cells["cDiemQT"].Value.ToString().Replace(',', '.'),
                dgvDiemMH.Rows[index].Cells["cDiemT"].Value.ToString().Replace(',', '.'));
            DataTable temp = diemsv.Detail(int.Parse(dgvDiemMH.Rows[index].Cells["cMaDK"].Value.ToString()));
            if (check > 0)
            {
                DataTable diem = (DataTable)dgvDiemMH.DataSource;
                DataRow dr = diem.NewRow();
                dr[0] = temp.Rows[0]["MaDK"];
                dr[1] = temp.Rows[0]["MaSV"];
                dr[2] = temp.Rows[0]["TenSV"];
                dr[3] = temp.Rows[0]["DiemQT"];
                dr[4] = temp.Rows[0]["DiemT"];
                dr[5] = temp.Rows[0]["DiemTB"];
                dr[6] = temp.Rows[0]["Loai"];
                diem.Rows.InsertAt(dr, index + 1);
                diem.Rows.RemoveAt(index);
            }
            else
            {
                dgvDiemMH.Rows[index].Cells["cDiemQT"].Value = temp.Rows[0]["DiemQT"];
                dgvDiemMH.Rows[index].Cells["cDiemT"].Value = temp.Rows[0]["DiemT"];
                MessageBox.Show("Bạn phải nhập đúng điểm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void btnIn_Click(object sender, EventArgs e)
        {
            if (CheckEmpty())
            {
                return;
            }
            Diem diem = new Diem();
            DataTable temp = diem.ListNameS(txtMaMH.Text, txtMaLop.Text);
            if (temp == null || temp.Rows.Count <= 0)
            {
                MessageBox.Show("Không tìm thấy điểm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            frmReportDanhSachMH frm = new frmReportDanhSachMH(temp);
            frm.Show();
        }

        private void txtMaMH_Leave(object sender, EventArgs e)
        {
            MonHoc monhoc = new MonHoc();
            monhoc.Info(txtMaMH.Text);
            lblTM.Text = monhoc.ThongTin.Ten;
        }

        private void txtMaLop_Leave(object sender, EventArgs e)
        {
            Lop lp = new Lop();
            lp.Info(txtMaLop.Text);
            lblTL.Text = lp.ThongTin.Ten;
        }

        private void txtMaMH_TextChanged(object sender, EventArgs e)
        {
            if (!xString.IsNumber(txtMaMH.Text, StyleNumber.INTEGER))
            {
                MessageBox.Show("Mã môn học chỉ được nhập số", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMaMH.Text = txtMaMH.Text.Trim().Substring(0, txtMaMH.Text.Trim().Length - 1);
                txtMaMH.Select(txtMaMH.Text.Length, 0);
            }
        }

        private void txtMaLop_TextChanged(object sender, EventArgs e)
        {
            if (!xString.IsNumber(txtMaLop.Text, StyleNumber.INTEGER))
            {
                MessageBox.Show("Mã lớp chỉ được nhập số", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMaLop.Text = txtMaLop.Text.Trim().Substring(0, txtMaLop.Text.Trim().Length - 1);
                txtMaLop.Select(txtMaLop.Text.Length, 0);
            }
        }
    }
}
